درسنامه آموزشی کار و فناوری کلاس نهم
پودمان برنامه نویسی

در این پودمان با استفاده از مهارتهایی که در پودمان الگوریتم بهدست آوردید، برنامههای سادهٔ رایانهای مینویسید و یک بازی رایانهای ساده را با طی کردن مراحل طراحی و ساخت میسازید.
چرا برنامهنویسی؟
برنامه نویسی هنر نوشتن دستورالعملهاست. ما با این کار به رایانه میگوییم که چه کاری را انجام دهد. هر برنامه مجموعهای از دستورالعملهاست. برای نوشتن این دستورالعملها از یک زبان برنامهنویسی استفاده میکنیم. پایتون یکی از بهترین زبانها برای شروع یادگیری مفاهیم برنامهنویسی در همهٔ گروههای سنی است. این زبان رایگان و قابل نصب روی انواع دستگاههاست.
مهارت برنامهنویسی، روشهای خلاقانهای را برای حل مسئله به صورت گامبهگام به ما میآموزد و باعث پرورش تفکر الگوریتمی، ارتقای مهارت حل مسئله و خلاقیت میشود. تحقیقات نشان میدهد دانش آموزانی که مهارت برنامه نویسی را در سنین کمتر میآموزند، بهطور قابل توجهی قدرت حل مسئله در آنها پرورش مییابد. همچنین این دانش آموزان در حوزههای دیگر مانند؛ تغییر نگرش نسبت به خطا، اعتماد به نفس، احساس توانمندی در یادگیری و استدلال منطقی نیز نسبت به دیگران تفاوت چشمگیری خواهند داشت. تأثیر مثبت این آموزشها بر قدرت درک مفاهیم ریاضی و ارتقای مهارتهای اجتماعی نیز ثابت شده است.
امروزه رایان هها همه جا حضور دارند و در همهٔ امور مربوط به انسا نها می توان ردی از رایانه ها را دید. در صنعت، پزشکی، آموزش، بازیهای رایانهای (سرگرمی) حمل ونقل،خانههای هوشمند، ادارات و غیره. سؤال مهم این است که چرا رایانهها اینگونه در زندگی انسان عصر مدرن نفوذ پیدا کردهاند؟ به عبارت دیگر، میخواهیم به این مسئله بپردازیم که اصلاً رایانهها چه میکنند؟ رایانهها را میتوان دستیاری قدرتمند برای انسانها دانست. رایانهها آمده اند تا وظایف و کارهای تکراریای از انسانها را به عهده بگیرند که انجام آنها دشوار و گاهی امکان پذیر نیست. البته رایانهها با وجود پیشرفتهای شگرف در حوزهٔ هوش مصنوعی، در برخی زمینهها مانند هوش و قدرت تشخیص، هنوز به پای انسان نرسیدهاند. با این حال سرعت پردازش آنها به ویژه در برخی موارد مانند محاسبات تکراری و دنبالهدار، بسیار بیشتر از سرعت پردازش انسان است. به این موارد میتوان قدرت ذخیرهسازی بیشتر و دقت بالا در محاسبات را هم افزود. در نهایت همهٔ این موارد باعث شده که رایانهها نقشی حیاتی در زندگی انسان امروز ایفا کنند.
سؤال مهم این است که انسانها چگونه میتوانند با رایانهها حرف بزنند یا زبان آنها را بفهمند؟
زبان رایانهها که به آن زبان ماشین هم گفته میشود، زبان صفر و یکها است و تعامل با این زبان برای انسان کار سادهای نیست.
همانطور که انسانها برای انتقال پیام از ابزاری به نام زبان استفاده میکنند و پیام خود را در قالب کلماتی که با ساختاری قانونمند در کنار هم چیده شدهاند، به دیگری منتقل میکنند، برای تعامل با رایانهها نیز از ابزار زبان استفاده میکنند. این نوع خاص از زبان را زبان برنامهنویسی میگویند.

نام بسیاری از زبانهای برنامهنویسی را احتمالا تاکنون شنیدهاید. Python ،Java ،Fortran ،Basic،Delphi ،Pascal ،C++ ،C و ... هریک از این زبانها ویژگیهای منحصر بهفرد خود را دارد و برای هدفی خاص مورد استفاده قرار میگیرد.
چرا زبان برنامهنویسی پایتون؟
پایتون در مقایسه با دیگر زبانهای برنامهنویسی، گرامر بسیار سادهای برای حروف چینی و اجرای برنامهها دارد. زبان برنامهنویسی پایتون یکی از زبانهای برنامهنویسی است که فراگیری آن ساده و در عین سادگی، کارایی فوق العادهای دارد. کدهای نوشته شده به این زبان خوانایی بالایی دارند و برنامههای آن را میتوان با تعداد خط کد کمتری نسبت به زبانهایی مانند، C و Java نوشت. همچنین این زبان جزء زبانهایی با منبع کد آزاد است و استفاده از آن کاملاً رایگان میباشد. پایتون به همراه کتاب خانههای مختلف به صورت رایگان در اختیار کاربران قرار میگیرد و قدرت فوق العادهای به کاربران آن میبخشد. به همین دلیل این زبان طرفداران زیادی دارد. زبان برنامهنویسی پایتون یکی از محبوبترین زبانهای برنامهنویسی دنیاست که هم در بین مبتدیان و هم در میان حرفهایها طرفدار دارد. شرکتهای بزرگی مانند گوگل، ناسا، دراپباکس و بسیاری دانشگاهها و مراکز علمی برای پروژههای تحقیقاتی خود از این زبان استفاده میکنند و این نشان از موفقیت و قدرت آن است.
نصب پایتون
پایتون نرمافزار متن باز است که کدهای آن بهصورت رایگان برای استفاده یا ویرایش در دسترس عموم قرار دارد. نسخه پایدار و قابل اطمینان یک نرم افزار نسخهٔ Stable است که توصیه میشود آن را نصب کنید. آخرین نسخهٔ پایدار مناسب ویندوز در زمان نوشتن این کتاب، پایتون 1 .10 .3 است.
مراحل نصب
1- ابتدا درصورتی که از نسخهٔ سیستم عامل نصب شده روی سیستم موردنظر آگاهی ندارید، به روش زیر آن را بررسی کنید تا بتوانید یکی از نسخههای مناسب برای ویندوزهای 32 یا 64 بیت را دانلود کنید.
الف) روی آیکن This PC در میزکار ویندوز راست کلیک و گزینه Properties را بزنید.
ب) در پنجرهٔ ظاهر شده نسخهٔ سیستم عامل ویندوز را بررسی کنید.

2- به نشانی Python.org بروید. از فهرست Downloads گزینهٔ Windows را برای انتخاب نسخهٔ ویندوز کلیک کنید.

3- پس از دانلود، روی فایل نصب راست کلیک و گزینهٔ Run as Administrator را انتخاب کنید. سپس پیغام ظاهر شده را با انتخاب Yes یا Run تأیید کنید.

4- توجه داشته باشید مطابق شکل زیر، هر دو گزینه را فعال کنید.
- با فعال کردن گزینهٔ Install launcher for all users، برنامهٔ پایتون برای همه کاربرانِ تعریف شده در ویندوز اجرا خواهد شد.
- در صورتی که گزینهٔ Add Python 3.10 to PATH را فعال کنید، مسیر برنامهٔ Python به متغیر PATH ویندوز اضافه میشود و میتوانید به صورت مستقیم برنامهٔ Python.exe را از هر مسیری با CMD اجرا کنید. با انتخاب گزینهٔ 3.10.1 Install Python نصب را آغاز کنید.

5- منتظر بمانید تا فایلهای لازم روی سیستم کپی شوند.

6- در پایان با ظاهر شدن پیغام "Setup was successful" دکمهٔ Close را بزنید.

شروع کار با پایتون
از فهرست Start گزینهٔ (10 . 3 Python) IDLE را انتخاب میکنیم. IDLE یک محیط توسعهٔ یکپارچه است. که همه ابزارهای موردنیاز برای نوشتن و اجرای برنامه را در اختیار ما قرار میدهد این محیط با نصب پایتون در اختیار کاربران قرار میگیرد که به دو صورت استفاده میشود:
الف) با اجرای IDLE، ابتدا محیط Shell Window ظاهر میشود که برای اجرا و مشاهده نتیجه دستورات به صورت خط به خط است.
دستور (‘Hello World’) print را بنویسید و سپس دکمهٔ Enter را بزنید تا نتیجه مشاهده شود.

برای چاپ خروجی استفاده میشود. ()print دستور
ب) از فهرست File گزینهٔ New File را انتخاب میکنیم تا محیط ویرایشگر متن ظاهر شود. در این محیط میتوانیم پس از نوشتن مجموعهای از دستورات، آنها را ویرایش، ذخیره و به صورت یکجا اجرا و نتیجه را مشاهده کنیم.
کار کلاسی (صفحهٔ 43 کتاب درسی)
گام 1) محیط ویرایشگر را باز کنید.
گام 2) دستورات مورد نظر را مطابق شکل زیر بنویسید.

گام 3) از فهرست File گزینهٔ Save را انتخاب و برنامه را با نام دلخواه در محل مناسب ذخیره کنید.
گام 4) از فهرست Run گزینهٔ Run Module یا F5 را میزنیم.

گام 5. خروجی برنامه در پنجرهٔ Shell نمایش داده میشود.

تا این جا اولین برنامه را در زبان پایتون نوشتیم.
کار کلاسی (صفحهٔ 44 تا 45 کتاب درسی)
یکی از خطاهای رایج در برنامهنویسی، خطاهای نوشتاری است که به آن خطای نحوی (Syntax Error) گفته میشود. این خطا به دلیل اشتباهات حروف چینی رخ میدهد.
با هم کلاسیهای خود، خطاهای زیر را بررسی و دلیل آن را بیان کنید.


متغیر
حافظهٔ رایانه از تعدادی خانهٔ حافظه تشکیل شده است. متغیر (Variable) محل ذخیرهٔ اطلاعاتی مانند اعداد، متن، مجموعهای از اعداد و .... در خانهٔ حافظهٔ رایانه است. میتوان یک متغیر را به عنوان یک برچسب برای هر خانهٔ حافظه درنظر گرفت.

برای تعریف یک متغیر در پایتون کافی است به آن نامی بدهیم و مقداری را در آن ذخیره کنیم. برای تعریف متغیر به صورت زیر عمل میکنیم.
نام متغیر سمت چپ، مساوی و مقدار آن سمت راست مساوی قرار میگیرد.
نام متغیر را میتوان به عنوان برچسبی برای خانهای از حافظه در نظر گرفت که مقدار متغیر در آن ذخیره میشود.
قوانین نامگذاری متغیرها در پایتون:
- پایتون نسبت به حروف کوچک و بزرگ حساس است .
- در نامگذاری متغیرها میتوانیم از حروف بزرگ و کوچک الفبای انگلیسی، اعداد و زیرخط استفاده کنیم.
- نام متغیرها حتماً باید با حروف الفبای انگلیسی و یا زیرخط شروع شود.
- استفاده از کاراکتر فاصله در نام متغیر غیرمجاز است.
- استفاده از کلمات کلیدی زبان پایتون در نام متغیر غیرمجاز است. (شکل زیر)

کار غیرکلاسی (صفحهٔ 46 کتاب درسی)
برنامههای زیر را بنویسید.
1- فاطمه کتاب داستانی را در 6 ساعت مطالعه کرد و 10 صفحه از آن باقی ماند. اگر این کتاب 100 صفحه داشته باشد، فاطمه بهطور متوسط در هر ساعت چند صفحه از آن را مطالعه کرده است؟
2- محاسبه کن یک ساعت و بیست دقیقه و سی ثانیه، چند ثانیه است.
3- مساحت و محیط یک دایره با شعاع 5 چقدر است؟
4- پسانداز هفتگی محمد، 3000 تومان است. او حساب کرد 5 هفته پس انداز او، نصف قیمت کیفی است که دوست دارد آن را بخرد. برنامهای بنویسید که قیمت کیف را محاسبه و چاپ کند.
متن یا رشته
نوع دادهای متنی که در زبان برنامه نویسی به آن رشته هم گفته میشود، در کنار نوع عددی از رایجترین انواع دادهٔ مورد استفادهٔ انسان است. این نوع داده دنبالهای از حروف، اعداد یا کاراکترها را شامل میشود که در میان "" یا ’‘ قرار میگیرند.
Message = 'Hello ,World'
دریافت مقدار از ورودی
تا کنون برنامههایی که نوشتیم همگی با مقدار ثابتی که در برنامه در نظر گرفته شده بود، اجرا میشد و نتایج آن را مشاهده میکردیم. در صورتی که بخواهیم برنامهٔ مقداری را از کاربر دریافت کنید، از دستور ()input استفاده میکنیم . برای این که در زمان دریافت از ورودی پیغامی مناسب به کاربرداده شود، میتوانیم پیغام را در یک رشته در داخل پرانتز جلوی دستور ()input بنویسیم.
('مقداری را وارد کنید =')n=input
مقدار دریافتی دستور ()input را میتوانیم در متغیری ذخیره کنیم.
فعالیت گروهی (صفحهٔ 47 کتاب درسی)
خروجی هر کد را با دوستان خود حدس بزنید و درباره آن بحث و گفتوگو کنید.

عملگرهای ریاضی
یکی از کاربردهای اولیه رایانه، انجام عملیات ریاضی و مقایسهای است. برای انجام محاسبات ریاضی در پایتون از عملگرهای زیر استفاده میکنیم.
تقدم عملگرهای ریاضی به صورت زیر است:
| اولویت | عملگر |
| 1 | ٭٭ |
| 2 | ٭ , / , // , % |
| 3 | + , - |
| عملگر | شرح | مثال |
| + | جمع | a+b |
| - | تفریق | a-b |
| ٭ | ضرب | a*b |
| / | تقسیم | a/b |
| // | تقسیم صحیح | a//b |
| ٪ | باقیمانده تقسیم | a٪b |
| ** | توان | a**b |
اگر عدد 25 به عنوان ورودی در دو دستور زیر داده شود. خروجیها را با هم مقایسه و دربارهٔ آن گفتوگو کنید.

کار غیرکلاسی (صفحهٔ 47 تا 48 کتاب درسی)
برنامههای زیر را بنویسید.
1- برنامهای بنویسید که شعاع قاعده و ارتفاع منبع آب استوانهای را از ورودی دریافت و سپس محاسبه کند که چند مترمکعب آب میگیرد.

2- در درس علوم آموختید که کار انجام شده با مقدار نیرو در اندازهٔ جابهجایی برابر است. این رابطه را با تساوی W=F.d نشان میدهیم. برنامهای بنویسید که کار انجام شده و مقدار نیرو را از ورودی دریافت و سپس میزان جابهجایی را محاسبه و چاپ کند.
3- طول یک فنر 10 سانتی متر است. وقتی وزنهای به جرم x به آن وصل شود، طول فنر از رابطهٔ y = 0/8 + 10 محاسبه میشود. برنامهای بنویسید که از ورودی جرم وزنهای برحسب کیلوگرم که به آن وصل شده دریافت و سپس، طول فنر را محاسبه و چاپ کند.

عملگرهای مقایسهای
رایانهها برای مقایسه از نمادهایی استفاده میکنند. برنامهنویسان به نمادهای جدول زیر عملگرهای مقایسهای میگویند. نتایج عملگرهای مقایسهای True (درست) یا False (غلط) است.
| علامت | شرح | مثال |
| == | مساوی | a==b |
| =! | نامساوی | a!=b |
| > | کوچکتر | a |
| < | بزرگتر | a>b |
| => | کوچکتر مساوی | a<=b |
| =< | بزرگتر مساوی | a>=b |

شرط
بسیاری از کارهایی که ما روزانه انجام میدهیم، بستگی به این دارد که شرطی برقرار باشد و یا برقرار نباشد. مثلاً اگر هوا سرد باشد لباسهای گرم میپوشیم.
در برنامه نویسی نیز گاهی نیاز است قسمتی از کدها در صورت برقراری شرطی اجرا شود. برای بررسی یک شرط از دستور if به شکل زیر استفاده میکنیم.

در صورتی که نتیجهٔ عبارت شرط درست (True) باشد، دستورات بلاک داخل if اجرا میشود.

بلاککد ، یک یا چند دستور است که در یک گروه قرار میگیرد و از لحاظ میزان تورفتگی مشابهاند. مثلاً مجموعهٔ کدهایی که در صورت برقراری شرط if اجرا میشوند، یک بلاککد را تشکیل میدهند. میزان تورفتگی (indentation) دستورات هر بلاککد به یک میزان است.

خروجی قطعهٔ کد زیر را حدس بزنید:
('سلام')print
temp=8
:10> if temp
('هوا سرد است')print
('لباس گرم بپوشید')print
('خدانگهدار')print
در این مثال temp درجه هواست.
در صورتی که درجه هوا کمتر از 10 درجه باشد هوا سرد است.
اگر مقدار 12=temp باشد برنامه چه خروجی خواهد داشت؟
کدام دستورات در بلاک کد قرار دارند؟
کار کلاسی (صفحهٔ 49 کتاب درسی)
با هم کلاسی خود برنامهای بنویسید که یک عدد از ورودی دریافت کند و سپس مشخص کند که این عدد زوج است یا فرد.
راهنمایی: عدد زوج ، عددی است که بر 2 بخشپذیر باشد.
در مواقعی که شرط دارای فقط دو حالت باشد، از دستور if-else استفاده میکنیم. در این دستور در صورتی که شرط دستور if برقرار باشد، بلاک کد مربوط به if اجرا و در غیر این صورت بلاک کد مربوط به else اجرا میشود.
کار کلاسی (صفحهٔ 49 کتاب درسی)
با هم کلاسیهای خود برنامهٔ قبلی را با استفاده از if-else بنویسید.

کار غیرکلاسی (صفحهٔ 50 کتاب درسی)
برنامهای بنویسید که دو عدد از ورودی دریافت و سپس عدد بزرگتر را چاپ کند.
کار غیرکلاسی (صفحهٔ 50 کتاب درسی)
برنامهای بنویسید که سه عدد از ورودی دریافت و سپس عدد بزرگتر را چاپ کند.
کتابخانۀ لاکپشت
قصد داریم با کدنویسی پایتون یک کارت شناسایی مشابه شکل زیر طراحی کنیم.
برای شروع چه کاری باید انجام دهیم؟
از کجا باید شروع کنیم؟

یکی از ایدههای حل مسئله، تقسیم آن به قسمتهای کوچکتر است. در تصویر زیر قسمتهای شکسته شده و ترتیب آنها را میبینیم.

بهتر است هر کار را تا حد امکان به قسمتهای کوچکتر تبدیل کنیم. برای رسم کادر مستطیل شکل کارت شناسایی به مراحل زیر دقت کنید.

حالا باز هم کار را به قسمتهای کوچکتر تقسیم میکنیم.

برای رسم بهتر از محور مختصات استفاده میکنیم.
برای رسم یک شکل هندسی ساده مثل مستطیل در پایتون، به دستورات خاصی نیاز داریم.
در پایتون به مجموعه دستورات با یک موضوع، کتابخانه میگوییم. مثل کتاب خانهٔ گرافیک که برای رسم خطوط و اشکال ساده استفاده میشود. نام این کتابخانه turtle به معنای لاکپشت است.
برای ساخت لاکپشت ابتدا از پایتون میخواهیم تا کتابخانهٔ لاکپشت را به برنامه بیاورد. import turtle
حالا میتوانیم دستورات این کتابخانه را استفاده کنیم turtle یک مجموعهٔ بزرگ کد است و به این مجموعه از کدها، کتابخانه یا ماژول میگوییم. پایتون دارای هزاران ماژول گوناگون است.

کار کلاسی (صفحهٔ 52 کتاب درسی)
طراحی کارت شناسایی
گام 1) از کتابخانهٔ turtle یک نمونه از نوع turtle بسازید.
laki=turtle.Turtle()
گام 2) لاکی میتواند به شکلهای مختلف باشد. در این جا همان شکل لاکپشت را برای آن انتخاب میکنیم. (shape یعنی شکل)
laki.shape('turtle')
گام 3) لاکی را حرکت بدهید. دستور زیر لاکی را 50 پیکسل جلو میبرد.
laki.forward(50)
گام 4) برنامه را ذخیره و با کلید F5 برنامه را اجرا کنید. (تعداد گام را تغییر و دوباره اجرا کنید)
گام 5) اگر بخواهیم لاکی وقتی حرکت میکند، خطی نکشد، باید به او بگوییم قلم را از زمین بردارد. بنابراین از متد penup استفاده میکنیم. pen یعنی قلم و up یعنی بالا.
برنامه را اجرا کنید. چرا این دستور تغییری ایجاد نکرد؟ راهحلی پیدا کنید.
laki.penup()
کنجکاوی: با ()pendown هم به لاکی میگوییم تا قلم را دوباره روی زمین بگذارد.
گام 6) با دستورات چرخش به چپ یا راست رسم مستطیل را کامل کنید.

گام 7) با استفاده از جدول زیر کارت شناسایی را تکمیل کنید.
| تغییر موقعیت لاکی به مختصات $(x,y)$ | (laki.goto(x,y |
| نوشتن متن با لاکی | ((اندازه و ’نام فونت‘) = font , ’متن مورد نظر‘) laki.write |
| تغییر رنگ خطوط و متن | (’نام رنگ‘)laki.color |
| تغییر ضخامت خطوط | (ضخامت)laki.width |
| پنهان کردن لاکی | ()laki.hideturtle |
حلقهٔ تکرار
به کدهای زیر نگاه کنید و کدهای تکراری متوالی را مشخص کنید.
import turtle
laki=turtle.Turtle()
laki.shape('turtle')
laki.color('green')
laki.width(3)
laki.penup()
laki.goto(-100,-100)
laki.pendown()
laki.forward(200)
laki.left(90)
laki.forward(200)
laki.left(90)
laki.forward(200)
laki.left(90)
laki.forward(200)
laki.left(90)

کد بالا یک مربع در وسط صفحه رسم میکند. حالا خودتان یک شش ضلعی و سپس یک هشت ضلعی رسم کنید.
در کدهای جدید نیز، کدهای تکراری بیشتری وجود دارد. برای جلوگیری از تکرار آنها، از حلقهٔ for استفاده میکنیم.
شکل کلی دستور for
در کد زیر متغیر i شمارندهٔ حلقه است. کلمهی range به همراه عدد داخل پرانتز، بیانگر اعداد از صفر تا یک کمتر از عدد داخل پرانتز است. یعنی (5)range، به معنای اعداد 0، 1، 2، 3 و 4 است که تعداد دفعات تکرار دستورات داخل بلاک for را مشخص میکند.

برای رسم مربع از قطعهٔ زیر به جای دستورات تکراری استفاده میکنیم.
for i in range(4):
laki.forward(200)
laki.left(90)
کار کلاسی (صفحهٔ 55 کتاب درسی)
با استفاده از دستور for، کدهای رسم شش ضلعی و هشت ضلعی را بازنویسی کنید.
کار غیرکلاسی (صفحهٔ 55 کتاب درسی)
شکل زیر را با کدهایی که تا این جا آموختید، رسم کنید.
راهنمایی: این شکل از 8 مربع با زاویهٔ چرخش 45 درجه تشکیل شده است.

حلقههای تودرتو
همانطور که در کدهای کار غیرکلاسی مشاهده کردید، قسمتی از کد که شامل حلقه for نیز میشود، تکرار شدند. برای جلوگیری از تکرار میتوان قسمت تکراری را مجدداً در یک بلاک حلقه تکرار جدید قرار داد که به این کار ایجاد حلقهٔ تودرتو میگویند.
import turtle
laki=turtle.Turtle()
laki.shape('turtle')
laki.color('green')
laki.width(3)
for i in range(8):
for j in range(4):
laki.forward(200)
laki.left(90)
laki.left(90)



